const joi = require('joi');

// 定义用户参数校验规则
// 详细配置地址 https://www.npmjs.com/package/@escook/express-joi
// joi.string()必须是字符串    pattern()以当前里面的正则表达式进行校验   [\S]去除空格  required()必须参数   error()抛出错误信息
const name = joi.string().pattern(/^[\S]{3,6}$/).required().error(new Error('用户名不能有空格,请输入3到6个任意字符串!'));
const pwd = joi.string().pattern(/^[\S]{6,15}$/).required().error(new Error('密码不能有空格,请输入6到15个任意字符串!'));
exports.userCheck = {
  body: {
    name,
    pwd,
  },
};

// 图书查询参数的校验规则  number()数值型   integer()不能为小数
const category = joi.string().required().error(new Error('书籍分类不能为空!'))
const page = joi.number().integer().required().error(new Error('页数只能为整数!'))
const size = joi.number().integer().required().error(new Error('数据条数只能为整数!'))
exports.findBookCheck = {
  query: {
    category,
    page,
    size
  }
}

// 图书修改提交信息校验规则  min()指定最少的数量
const title = joi.string().error(new Error('标题不能为空!'));
const price = joi.number().integer().error(new Error('价格只能为整数!'));
const id = joi.number().min(1).integer().required().error(new Error('id必须大于等于1!'));
exports.updateBookCheck = {
  query: {
    title,
    price,
    id,
  },
};

// 添加图书提交信息验证规则
const title2 = joi.string().required().error(new Error('标题不能为空!'));
const book_img2 = joi.string().required().error(new Error('图片不能为空!'));
const price2 = joi.number().integer().required().error(new Error('价格只能为整数!'));
const category2 = joi.string().required().error(new Error('书籍分类不能为空!'))

exports.addBookCheck = {
  query: {
    title2,
    book_img2,
    price2,
    category2,
  },
}